package trastienda.bean;

import javax.faces.application.FacesMessage;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.junit.runner.Request;

import trastienda.dao.ProductoDAO;
import trastienda.excepcion.DAOExcepcion;
import trastienda.modelo.Producto;

public class ProductoBean {

	private int idProducto;
	private String categoria;
	private String nombre;
	private String descripcion;
	private double precio;
	private int stock;
	private int importancia;
	private String imagen;

	
	public int getIdProducto() {
		return idProducto;
	}

	public void setIdProducto(int idProducto) {
		this.idProducto = idProducto;
	}

	public String getCategoria() {
		return categoria;
	}

	public void setCategoria(String categoria) {
		this.categoria = categoria;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public double getPrecio() {
		return precio;
	}

	public void setPrecio(double precio) {
		this.precio = precio;
	}

	public int getStock() {
		return stock;
	}

	public void setStock(int stock) {
		this.stock = stock;
	}

	public int getImportancia() {
		return importancia;
	}

	public void setImportancia(int importancia) {
		this.importancia = importancia;
	}

	public String getImagen() {
		return imagen;
	}

	public void setImagen(String imagen) {
		this.imagen = imagen;
	}

	public String listar() {
		System.out.println("ProductoBean: listar()");
		ProductoDAO dao = new ProductoDAO();
		Producto p=new Producto();
		ExternalContext context = FacesContext.getCurrentInstance()
				.getExternalContext();
		HttpSession session = (HttpSession) context.getSession(true);
		try {
			session.setAttribute("PRODUCTO_LISTADO", dao.listar());
		} catch (DAOExcepcion e) {
			System.err.println(e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage("Hubo un problema: " + e.getMessage()));
			return "error";
		}
		return "productoBean_listar";
	}

	public String eliminar() {
		ExternalContext context = FacesContext.getCurrentInstance()
				.getExternalContext();
		HttpServletRequest request = (HttpServletRequest) context.getRequest();
		System.out.println(request.getParameter("productoNombre"));
		ProductoDAO dao = new ProductoDAO();
		try {
			//*****************************************************
			//VER AQUI
			//*****************************************************
			dao.eliminar(Integer.parseInt(request.getParameter("Idprod")));
		} catch (DAOExcepcion e) {
			System.err.println(e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage("Hubo un problema: " + e.getMessage()));
			return "error";
		}
		return listar();
	}

	public String editar() {
		ExternalContext context = FacesContext.getCurrentInstance()
				.getExternalContext();
		HttpServletRequest request = (HttpServletRequest) context.getRequest();
		ProductoDAO dao = new ProductoDAO();
		try {
			Producto prod = dao.obtenerProductoPorId(Integer.parseInt(request.getParameter("Idprod")));
			System.out.println(prod.getIdProducto());
			System.out.println(prod.getCategoria());
			System.out.println(prod.getNombre());
			System.out.println(prod.getDescripcion());
			System.out.println(prod.getPrecio());
			System.out.println(prod.getStock());
			System.out.println(prod.getImportancia());
			System.out.println(prod.getImagen());
			
			request.setAttribute("productoBean", prod);
		} catch (DAOExcepcion e) {
			System.err.println(e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage("Hubo un problema: " + e.getMessage()));
			return "error";
		}
		return "productoBean_editar";
	}

	public String nuevo() {
		return "productoBean_nuevo";
	}

	public String insertar() {
		System.out.println(nombre);
		System.out.println(descripcion);
		System.out.println(precio);
		System.out.println(stock);
		System.out.println(importancia);
		System.out.println(imagen);
		Producto vo = new Producto();
		vo.setNombre(nombre);		
		vo.setDescripcion(descripcion);
		vo.setPrecio(precio);
		vo.setStock(stock);
		vo.setImportancia(importancia);
		vo.setImagen(imagen);

		ProductoDAO dao = new ProductoDAO();
		try {
			dao.insertar(vo);
		} catch (DAOExcepcion e) {
			System.err.println(e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage("Hubo un problema: " + e.getMessage()));
			return "error";
		}
		return listar();
	}

	public String actualizar() {
		Producto vo = new Producto();
		//vo.setIdProducto(idProducto);
		vo.setNombre(nombre);		
		vo.setDescripcion(descripcion);
		vo.setPrecio(precio);
		vo.setStock(stock);
		vo.setImportancia(importancia);
		vo.setImagen(imagen);
		ProductoDAO dao = new ProductoDAO();
		try {
			dao.actualizar(vo);
		} catch (DAOExcepcion e) {
			System.err.println(e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage("Hubo un problema: " + e.getMessage()));
			return "error";
		}
		return "productoBean_listar";
		//return listar();
	}
	
}
